/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ControleAcademico.View;

import ControleAcademico.Model.Dao.DisciplinaDaoImp;
import ControleAcademico.Model.Pojo.Disciplina;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 *
 * @author arthur
 * @author renan
 * @author tais
 * @author vinicius
 */
public class MenuDisciplina {
    
    // Atributos
    private DisciplinaDaoImp disciplinaDao;
    
    // Metodos  
    public MenuDisciplina(){
        
    }
    
    public void criaListaVazia() {
        this.disciplinaDao = new DisciplinaDaoImp();
    }
    
    public DisciplinaDaoImp getDisciplinaDao() {return this.disciplinaDao;};
    
    public void cadastrarDisciplina(){
        System.out.println("Informe o nome da disciplina: \n");
        String nome = Console.readString();
        System.out.println("Informe a ementa: \n");
        String ementa = Console.readString();      
        System.out.println("Informe a carga horária: \n");
        int cargaHoraria = Console.readInteger(); 

        int id = this.disciplinaDao.obterLista().size() + 1;
        
        Disciplina disciplina = new Disciplina(nome,ementa,cargaHoraria,id);
        
        try {
            this.disciplinaDao.adicionar(disciplina);

        } catch (IOException ex) {
            System.out.println("Disciplina não inserida.\nDisciplina já consta na lista.");
        }
        
    }
    
    public void salvar() {
        
        try {
            File arquivo;  
  
            arquivo = new File("Disciplinas.txt");  
            FileOutputStream fos = new FileOutputStream(arquivo);
            
            for (Disciplina a : getDisciplinaDao().obterLista()) {
                String escrita = (a.getId() + "\t" + a.getNome() + "\t" + a.getEmenta() 
                        + "\t" + a.getCargaHoraria() + "\n");
                fos.write(escrita.getBytes());
            }
            
            fos.close();  

        }catch (Exception ee) {  
            System.out.println(ee);
        }
    
    }
    
        public void load() {
        
        try {
            
            File entrada = new File("Disciplinas.txt");
            InputStream leituraEntrada = new  FileInputStream(entrada);
            InputStreamReader leituraStream = new InputStreamReader(leituraEntrada);  
            BufferedReader leituraBuffer = new BufferedReader(leituraStream);

            String linha = leituraBuffer.readLine();
            this.criaListaVazia();
     
            while(linha!= null) {
                String s[] = linha.split("\\t");
                Disciplina novaDisciplina = new Disciplina(s[1],s[2],Integer.parseInt(s[3]),Integer.parseInt(s[0]));
                this.getDisciplinaDao().adicionar(novaDisciplina);
                linha = leituraBuffer.readLine();
            }


            leituraBuffer.close();
            leituraStream.close();
            leituraEntrada.close();
  
        }catch (Exception ee) {  
            System.out.println("Erro na leitura do arquivo.");
            ee.printStackTrace();  
        }
    }
    
    
}
